package com.qfedu.entity.course12;

public class QuickSort {
    public static void quickSort(int[] arr, int low, int high) {
        int i = low; //i是向后搜索指针
        int j = high;//j是向前搜索指针
        int temp = arr[i];
        while (i < j) {
            while (i < j && arr[j] >= temp) j--;//arr[j]不小于基准，不用交换，继续向前搜索
            if (i < j) arr[i++] = arr[j]; //比arr[0]小的记录移到前面
            while (i < j && arr[i] <= temp) i++;//arr[i] 不大于基准，不用交换，继续向后搜索
            if (i < j) arr[j--] = arr[i]; //比arr[0]大的记录移到后面
        }
        arr[i] = temp;//确定基准记录位置
        if (low < i - 1) quickSort(arr, low, i - 1); //递归处理左子区
        if (high > i + 1) quickSort(arr, i + 1, high); //递归处理右子区
    }
}
